﻿namespace Reactor.Messaging
{
    /// <summary>
    /// Interface to designate an implementor as a message destination.
    /// </summary>
    public interface IMessagingChannel
    {
        /// <summary>
        /// Gets or sets the destination's name.
        /// </summary>
        /// <value>The name.</value>
        string DestinationName { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether the message delivery to this destination is to be transactional.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance is transactional; otherwise, <c>false</c>.
        /// </value>
        bool IsTransactional { get; set; }

        /// <summary>
        /// Gets typed version of the destination name.
        /// </summary>
        /// <returns></returns>
        string GetTypedDestinationName();
    }
}
